f4f109ae911c7d7fdc1527b133da6e2df028af71,basiclti/basiclti-util/src/java/org/imsglobal/basiclti/XMLMap.java,XMLMap,getOrAddChildNode,#Document#Node#String#number#number#,665

Before Change


	@SuppressWarnings("static-access")
	private static Node getOrAddChildNode(Document doc, Node parentNode, String nodeName,int whichNode, int d)
	{
		doDebug(d,"> getOrAddChildNode name="+nodeName+"@"+whichNode+" parentNode="+ nodeToString(parentNode));
		d++;
		if ( nodeName == null || parentNode == null) return null;

		// Check to see if we are somewhere in an index
		int begpos = nodeName.indexOf('[');
		int endpos = nodeName.indexOf(']');
		// doDebug(d,"Looking for bracket ipos="+begpos+" endpos="+endpos);
		if ( begpos > 0 && endpos > begpos && endpos < nodeName.length() ) {
			String indStr = nodeName.substring(begpos+1,endpos);
			doDebug(d,"Index String = "+ indStr);
			nodeName = nodeName.substring(0,begpos);
			doDebug(d,"New Nodename="+nodeName);
			Integer iVal = new Integer(indStr); 
			doDebug(d,"Integer = "+iVal);
			whichNode = iVal;
		}
		
		NodeList nl = parentNode.getChildNodes();
		int foundNodes = -1;
		if ( nl != null ) for (int i = 0; i< nl.getLength(); i++ ) {
			Node node = nl.item(i);
			// doDebug(d,"length= " +nl.getLength()+ " i="+i+" NT="+node.getNodeType());
			// doDebug(d,"searching nn="+nodeName+" nc="+node.getNodeName());
			if (node.getNodeType() == node.ELEMENT_NODE) {
				if ( nodeName.equals(node.getNodeName()) ) {
					foundNodes++;
					d--;
					doDebug(d,"< getOrAddChildNode found name="+ nodeToString(node));
					doDebug(d,"foundNodes = "+foundNodes+" looking for node="+whichNode);
					if ( foundNodes >= whichNode ) return node;
				}
			}
		}

		Element newNode = null;
		while ( foundNodes < whichNode ) {
			foundNodes++;
			doDebug(d,"Adding node at position " + foundNodes + " moving toward " + whichNode);
			if ( nodeName == null ) continue;
			newNode = doc.createElement(nodeName);
			doDebug(d,"Adding "+nodeName+" at "+ nodeToString(parentNode)+" in "+doc);
			parentNode.appendChild(newNode);
			doDebug(d,"xml="+documentToString(doc,false));
			doDebug(d,"getOrAddChildNode added newnode="+ nodeToString(newNode));
		}
		d--;
		doDebug(d,"< getOrAddChildNode added newnode="+ nodeToString(newNode));
		return newNode;
	}

After Change


	@SuppressWarnings("static-access")
	private static Node getOrAddChildNode(Document doc, Node parentNode, String nodeName,int whichNode, int d)
	{
		if ( DF ) doDebug(d,"> getOrAddChildNode name="+nodeName+"@"+whichNode+" parentNode="+ nodeToString(parentNode));
		d++;
		if ( nodeName == null || parentNode == null) return null;

		// Check to see if we are somewhere in an index
		int begpos = nodeName.indexOf('[');
		int endpos = nodeName.indexOf(']');
		// doDebug(d,"Looking for bracket ipos="+begpos+" endpos="+endpos);
		if ( begpos > 0 && endpos > begpos && endpos < nodeName.length() ) {
			String indStr = nodeName.substring(begpos+1,endpos);
			if ( DF ) doDebug(d,"Index String = "+ indStr);
			nodeName = nodeName.substring(0,begpos);
			if ( DF ) doDebug(d,"New Nodename="+nodeName);
			Integer iVal = new Integer(indStr); 
			if ( DF ) doDebug(d,"Integer = "+iVal);
			whichNode = iVal;
		}
		
		NodeList nl = parentNode.getChildNodes();
		int foundNodes = -1;
		if ( nl != null ) for (int i = 0; i< nl.getLength(); i++ ) {
			Node node = nl.item(i);
			// doDebug(d,"length= " +nl.getLength()+ " i="+i+" NT="+node.getNodeType());
			// doDebug(d,"searching nn="+nodeName+" nc="+node.getNodeName());
			if (node.getNodeType() == node.ELEMENT_NODE) {
				if ( nodeName.equals(node.getNodeName()) ) {
					foundNodes++;
					d--;
					if ( DF ) doDebug(d,"< getOrAddChildNode found name="+ nodeToString(node));
					if ( DF ) doDebug(d,"foundNodes = "+foundNodes+" looking for node="+whichNode);
					if ( foundNodes >= whichNode ) return node;
				}
			}
		}

		Element newNode = null;
		while ( foundNodes < whichNode ) {
			foundNodes++;
			if ( DF ) doDebug(d,"Adding node at position " + foundNodes + " moving toward " + whichNode);
			if ( nodeName == null ) continue;
			newNode = doc.createElement(nodeName);
			if ( DF ) doDebug(d,"Adding "+nodeName+" at "+ nodeToString(parentNode)+" in "+doc);
			parentNode.appendChild(newNode);
			if ( DF ) doDebug(d,"xml="+documentToString(doc,false));
			if ( DF ) doDebug(d,"getOrAddChildNode added newnode="+ nodeToString(newNode));
		}
		d--;
		if ( DF ) doDebug(d,"< getOrAddChildNode added newnode="+ nodeToString(newNode));
		return newNode;
	}